package com.stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class Stream映射 {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("aa","bb","cc");
		
		/**
		 * map(fun) 参数为一个函数，该函数会被应用到每个元素上，并将其映射成一个新的元素
		 */
		Stream<String> stream1 = list.stream().map(v -> v.toLowerCase());
		stream1.forEach(System.out::println);
		
		List<Integer> list1 = Arrays.asList(1,2,3,4,5);
		List<Integer> list2 = Arrays.asList(3,5,7,9,11);
		List<List<Integer>> list3 = Arrays.asList(list1,list2);
		/**
		 * flatMap表示创建stream的集合外层可以得到一个stream，内层的每个元素也可以获取一个stream
		 * 这样就可以遍历每个内层的元素的stream，然后每个内层元素返回一个新的stream，所有的新的内层元素stream组合成一个新的stream
		 * 也就是把嵌套集合统一放到一个新的集合中
		 */
		Stream<Integer> stream2 = list3.stream()
			.flatMap(t -> {
				return t.stream().map(v -> v - 2);
			});
		stream2.forEach(System.out::println);
	}
}
